Magic Type Classes
GHC-8.2で組み込みで入った
なので、この名前のGHC拡張があるわけではないmrsekut.icon
HaskellのRecordを定義すると、
HasField型クラス
UpadatedField型クラス
の2つのinstanceを自動生成する
何が嬉しいのか
OverloadedLabelsの利用が楽になったりする
wiki
例
こんなRecordを定義すると
code:hs
data T = MkT { x :: Int }
以下がderivingされる
code:hs
instance HasField "x" T Int where
getField _ = x
instance UpdateField "x" T T Int where
setField _ (MkT _) x = MkT x